<?php
declare(strict_types=1);

namespace SixShop\ShippingTemplate\Model;

use think\Model;

/**
 * Class SixShop\ShippingTemplate\Model\ShippingTemplateRelationModel
 *
 * @property int $id 主键
 * @property int $template_id 运费模板ID
 * @property string $biz_type 业务类型
 * @property int $biz_id 业务实体ID
 * @property string $create_time 创建时间
 * @property string $update_time 更新时间
 */
class ShippingTemplateRelationModel extends Model
{
    protected function getOptions(): array
    {
        return [
            'name' => 'shipping_template_relations',
            'pk' => 'id',
        ];
    }

    /**
     * 关联运费模板
     */
    public function template()
    {
        return $this->belongsTo(ShippingTemplateModel::class, 'template_id');
    }

    /**
     * 根据业务类型和业务ID获取关联记录
     */
    public static function getByBiz(string $bizType, int $bizId)
    {
        return self::where('biz_type', $bizType)
            ->where('biz_id', $bizId)
            ->find();
    }

    /**
     * 根据运费模板ID获取关联记录
     */
    public static function getByTemplateId(int $templateId)
    {
        return self::where('template_id', $templateId)
            ->select();
    }

    /**
     * 根据业务类型和业务ID获取运费模板ID
     */
    public static function getTemplateIdByBiz(string $bizType, int $bizId): int
    {
        $relation = self::getByBiz($bizType, $bizId);
        return $relation ? $relation->template_id : 0;
    }
}